package com.cr.manager.service.impl;

import java.util.List;

import com.cr.common.constant.CommonConstant;
import com.cr.common.utils.DateUtils;
import com.cr.manager.domain.dto.CarDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.cr.manager.mapper.CarMapper;
import com.cr.manager.domain.Car;
import com.cr.manager.service.ICarService;

/**
 * 车辆管理Service业务层处理
 * 
 * @author lms
 * @date 2024-08-07
 */
@Service
public class CarServiceImpl implements ICarService 
{
    @Autowired
    private CarMapper carMapper;

    /**
     * 查询车辆管理
     * 
     * @param id 车辆管理主键
     * @return 车辆管理
     */
    @Override
    public Car selectCarById(Integer id)
    {
        return carMapper.selectCarById(id);
    }

    /**
     * 查询车辆管理列表
     *
     * @param car 车辆管理
     * @return 车辆管理
     */
    @Override
    public List<CarDto> selectCarList(Car car)
    {
        return carMapper.selectCarList(car);
    }

    /**
     * 查询未出租的车辆管理列表
     *
     * @return 车辆管理
     */
    @Override
    public List<CarDto> selectCarIsNotRentList()
    {
        return carMapper.selectCarIsNotRentList();
    }

    /**
     * 新增车辆管理
     * 
     * @param car 车辆管理
     * @return 结果
     */
    @Override
    public int insertCar(Car car)
    {
        car.setCreateTime(DateUtils.getNowDate());
        car.setIsRent(CommonConstant.NOT_REND);         // 未出租
        return carMapper.insertCar(car);
    }

    /**
     * 修改车辆管理
     * 
     * @param car 车辆管理
     * @return 结果
     */
    @Override
    public int updateCar(Car car)
    {
        car.setUpdateTime(DateUtils.getNowDate());
        return carMapper.updateCar(car);
    }

    /**
     * 批量删除车辆管理
     * 
     * @param ids 需要删除的车辆管理主键
     * @return 结果
     */
    @Override
    public int deleteCarByIds(String[] ids)
    {
        // 1、判断是否有出租
        for (String id : ids) {
            if (CommonConstant.REND.equals(carMapper.selectCarById(Integer.parseInt(id)).getIsRent())) {
                // 有出租，则不删除
                throw new RuntimeException("该车辆处于出租状态，不可删除");
            }
        }
        // 2、批量删除
        return carMapper.deleteCarByIds(ids);
    }

    /**
     * 删除车辆管理信息
     * 
     * @param id 车辆管理主键
     * @return 结果
     */
    @Override
    public int deleteCarById(String id)
    {
        // 1、判断是否有出租
        if (CommonConstant.REND.equals(carMapper.selectCarById(Integer.parseInt(id)).getIsRent())) {
            // 有出租，则不删除
            throw new RuntimeException("该车辆处于出租状态，不可删除");
        }
        // 2、删除车辆
        return carMapper.deleteCarById(id);
    }
}
